package com.oms.common;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.oms.constant.UserRoleEnum;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * @Author zhanghailong
 * @Description TODO
 * @Date 18:50 2020/3/26
 */
@Data
public class BaseDomain<T extends Model<T>> extends Model<T> implements Serializable {

    /**
     * id
     */
    @TableId
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    /**
     * 创建时间
     */
    @TableField(fill= FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createDate;

    /**
     * 更新日期
     */
    @TableField(fill=FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateDate;

    /**
     * 创建人id
     */
    @TableField(fill=FieldFill.INSERT)
    private Long createUserId;

    /**
     * 最后更新人id
     */
    @TableField(fill=FieldFill.INSERT_UPDATE)
    private Long updateUserId;

//    /**
//     * 创建人角色
//     */
//    @TableField(fill=FieldFill.INSERT)
//    private UserRoleEnum createUserRole;

//    /**
//     * 更新人角色
//     */
//    @TableField(fill=FieldFill.INSERT_UPDATE)
//    private UserRoleEnum updateUserRole;

    @Override
    protected Serializable pkVal() {
        return this.id;
    }

//    @Override
//    public String toString() {
//        return "BaseDomain [id=" + id + ", createDate=" + createDate + ", updateDate=" + updateDate + ", createUserId="
//                + createUserId + ", updateUserId=" + updateUserId + ", createUserRole=" + createUserRole
//                + ", updateUserRole=" + updateUserRole + "]";
//    }
}
